﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

//==================================================================
// Copyright (C) 2011 深圳市中旭企业管理股份有限公司
// 作 者：it012
// Email: ***
// 日 期：2012/03/28
// 描 述：对字符串类的扩展
// 版 本：1.0.0.0
//    
//==================================================================

namespace ZX.BLL
{
    public static class StringFacility
    {
        /// <summary>
        /// 检测字符串是否有值
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool HasValue(this string str)
        {
            if(true == string.IsNullOrEmpty(str))
                return false;
            if (true == string.IsNullOrWhiteSpace(str))
                return false;
            return true;
        }

        /// <summary>
        /// 检测字符串是否超过指定长度
        /// </summary>
        /// <param name="str"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        public static bool IsOverLength(this string str, int length)
        {
            if (true == str.HasValue())
            {
                if (str.Length > length)
                    return true;
            }
            return false;
        } 

        /// <summary>
        /// 检测是否汉字
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool IsCharacter(this string str,int length)
        {
            Regex reg = new Regex("^[\u4E00-\u9FA5]+$");
            if (reg.IsMatch(str))
            {
                if (str.Length <= length)
                {
                    return true;
                }
            }
            return false;
        }

        public static bool IsAlphabet(this string str)
        {
            Regex reg = new Regex("^[A-Za-z]+$");
            return reg.IsMatch(str);
        }

        public static bool IsInt32(this string str)
        {
            Regex reg = new Regex(@"^[1-9]\d*$");
            if (reg.IsMatch(str))
            {
                int i = Int32.Parse(str);
                if (int.MaxValue > i && int.MinValue < i)
                {
                    return true;
                }
            }
            return false;
        }

        public static bool IsMobilePhoneNO(this string str)
        {
            Regex reg = new Regex(@"^\d{11}$");
            if (reg.IsMatch(str))
                return true;
            return false;
        }

        public static bool IsIDCardNO(this string str)
        {
            Regex reg = new Regex(@"^\d{15}$|^\d{18}$|^\d{17}(?:\d|x|X)$");
            if (reg.IsMatch(str))
                return true;

            return false;
        }

        public static bool IsEmail(this string str)
        {
            Regex reg = new Regex(@"([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})");
            if (reg.IsMatch(str))
                return true;

            return false;
        }
    }
}
